#pragma once
#include <Ogre.h>

namespace Utils {
	typedef enum {X=0, Y=1, Z=2} Axis;
	
	class Vector3 : public Ogre::Vector3
	{
	public:
		Vector3();
		Vector3(const Ogre::Vector3& v);
		Vector3(Ogre::Real x, Ogre::Real y, Ogre::Real z);
		inline void set(Axis axis, Ogre::Real value);
		inline Ogre::Real get(Axis axis) const;
		Vector3 operator+(const Ogre::Vector3& v) const;
		Vector3 operator*(const Ogre::Real scalar) const;
	};
	
	void autoRotate(Axis axis, Ogre::Real rotAccel, Ogre::Real rotSpeed, Vector3 speed, Vector3 &accel);
}
